Establishing a communication dialog between two end points allows content to be exchanged between the two end points via Internet Protocol (IP) networks. The content may be messages such as instant messages (IM), audio and/or video for phone calls, or any other type of content. In order to establish a dialog between two end points, each end point must be able to discover the address of the other end point to use in the subsequent dialog establishment and must be able to send and receive information to and from the other end point. The ends point may be any IP capable computing device such as but not limited to smart phones, computers, netbooks, laptops, desk phones, audio or video conferencing devices or any device that is capable to two-way IP communication.
The discovery of an end point address, and the subsequent dialog establishment, can be accomplished using intermediary servers. For example, the Session Initiation Protocol (SIP), an IETF-defined signaling protocol widely used for controlling communication sessions such as voice and video calls over IP, provides for address discovery by using location services in a SIP proxy/registrar. When a first party wishes to establish a dialog with an end point associated with a second party, a transaction can be initiated with a SIP proxy/registrar server of the second party. Any end points associated with the second party can register addresses with the SIP proxy/registrar, and these addresses can be returned to the first party. In one illustrative dialog establishment message flow, the first party sends an INVITE message that includes its address information. The INVITE message is routed to the SIP proxy/registrar server associated with the second party. The SIP proxy/registrar determines the address of the end point device of the second party and forwards the INVITE message to the address. The end point of the second party receives the INVITE message, and if they wish to establish a dialog, sends a 200 OK message back to the SIP proxy/registrar, which includes the address information of the second end point. The 200 OK message is routed back to the end point of the first party, and the address information of the second party is used to establish a dialog directly between the two end points. With the address information exchanged, the dialog can be established without requiring messages be routed through the SIP proxy/server. Although the use of the SIP proxy/registrar allows for the discovery of end point addresses and subsequent dialog establishment, the use of proxy servers can be problematic from a scalability point of view.
A peer-to-peer (P2P) architecture may be used as an alternative to the SIP proxy and registrar infrastructure when discovering addresses of end points and establishing dialogs. In a P2P architecture there is no central servers that can provide the address associated with an end point as is the case with the proxy/registrar servers described above. Any address for dialog establishment must first be discovered using the P2P architecture. In a mobile environment, in which devices may lose communication periodically, or change addresses frequently, the address discovery is complicated and can cause performance issues with the dialog establishment. Further, the use of a P2P architecture is complicated by network address translation (NAT) and firewall issues, since a message may be received from an unknown location which may not be able to cross the NAT or firewall.
Therefore there is a need for an improved method of discovering addresses and establishing dialogs in a P2P architecture.
It will be noted that throughout the appended drawings, like features are identified by like reference numerals.